package Controlador;
import java.awt.event.ActionEvent;


import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import Modelo.MAccion;
import Modelo.MIngrediente;
import Modelo.MProducto;
import Modelo.MReceta;
import Vistas.VProducto;

public class CProducto implements ActionListener{
	public VProducto vProducto;
	public MProducto mproducto;
	public MAccion maccion;
	Vector<MReceta> detalles;


	public CProducto(VProducto vproducto){
		detalles=new Vector<MReceta>();
		vProducto=vproducto;
	}

		public void actionPerformed(ActionEvent ae) {
			if(ae.getActionCommand().equals(" Agregar ")){
				if(validarCampos()){
					if(validarLetras(vProducto.getTxtDesPro().getText())){
				mproducto = new MProducto(Integer.parseInt(vProducto.getTxtCodPro().getText()),Integer.parseInt(vProducto.getTxtCodCatPro().getText()),vProducto.getTxtDesPro().getText(),Float.parseFloat(vProducto.getTxtPrePro().getText()),"A");
				maccion = new MAccion();
                maccion.registrarProducto(mproducto);
                maccion.InsertarReceta(detalles);
                cancelar();
                detalles.clear();
					}else
						 JOptionPane.showMessageDialog(null,"Verifique no se encuentren letras en en el nombre,apellido y direccion","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);
                
					}
				else
					 JOptionPane.showMessageDialog(null,"Debes llenar todos los datos","Cliente", 
								JOptionPane.INFORMATION_MESSAGE);
			}
			
            if(ae.getActionCommand().equals("Modificar")){
				
				maccion = new MAccion();
				mproducto=new MProducto(Integer.parseInt(vProducto.getTxtCodPro().getText()),Integer.parseInt(vProducto.getTxtCodCatPro().getText()),vProducto.getTxtDesPro().getText(),Float.parseFloat(vProducto.getTxtPrePro().getText()),"A");
                maccion.modificarProducto(Integer.parseInt(vProducto.getTxtCodPro().getText()),mproducto);
                cancelar();
			}
			
			if(ae.getActionCommand().equals("Incluir")){
			
				 MAccion maccion = new MAccion();
			    float cant;
			    MReceta detalle;
			
			int codProducto,codigoing;
			String descripcionIngrediente;
			cant=Float.parseFloat(vProducto.getTxtCantidad().getText());
			codProducto=Integer.parseInt(vProducto.getTxtCodPro().getText());
			descripcionIngrediente=vProducto.getJcbIngrediente().getSelectedItem().toString();
			codigoing=maccion.ObtenerCodIngrediente(descripcionIngrediente);
			detalle=new MReceta(codProducto,codigoing,cant);
			vProducto.listaModel.addElement(detalle.getCantidad()+"  "+descripcionIngrediente);
			detalles.add(detalle);
		
			}
			
			if(ae.getActionCommand().equals(" Eliminar ")){
				maccion = new MAccion();
                maccion.eliminarProducto(Integer.parseInt(vProducto.getTxtCodPro().getText()));
			}
			
			
			if(ae.getActionCommand().equals("  Buscar  ")){
				if(!vProducto.getTxtCodPro().getText().equals("")){
				MProducto producto=new MProducto();
				Vector<MReceta> recetas=new Vector<MReceta>();
				MReceta receta;
				MIngrediente ingrediente;
				maccion = new MAccion();
				producto=maccion.capturarProducto(Integer.parseInt(vProducto.getTxtCodPro().getText()));
				if(producto!=null){
				vProducto.getTxtCodCatPro().setText(String.valueOf(producto.getCodigocat()));
				vProducto.getTxtDesPro().setText(producto.getDescripcion());
				vProducto.getTxtPrePro().setText(String.valueOf(producto.getPreciouni()));
				recetas=maccion.capturarReceta(Integer.parseInt(vProducto.getTxtCodPro().getText()));
				for(int i=0;i<recetas.size();i++){
					receta=recetas.elementAt(i);
					ingrediente=maccion.capturarIngrediente(receta.getCodigoin());
					vProducto.listaModel.add(i,receta.getCantidad()+" "+ingrediente.getDescripcion());
				}
				}else
					JOptionPane.showMessageDialog(null,"El Producto no existe","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
				}
				else
					JOptionPane.showMessageDialog(null,"El introduzca el codigo del producto","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
			}
			
			if(ae.getActionCommand().equals("Cancelar ")){
				cancelar();
						}
				
				if(ae.getActionCommand().equals("    Salir     ")){
					int opcion = JOptionPane.showConfirmDialog(new JFrame(),"Desea volver al menu anterior?",
							     "Mensaje de Confirmacion",JOptionPane.YES_NO_OPTION,
							     JOptionPane.QUESTION_MESSAGE);
					if (opcion == JOptionPane.YES_OPTION)
						vProducto.dispose();
				                         }
		}
		public void cancelar(){
			vProducto.getTxtCodPro().setText("");
			vProducto.getTxtDesPro().setText("");
			vProducto.getTxtCantidad().setText("");
			vProducto.getTxtPrePro().setText("");
			vProducto.listaModel.clear();
			vProducto.getTxtCodCatPro().setText("");
			vProducto.getTxtCodPro().requestFocus();
			
		}
		
		private boolean validarLetras(String letras){
			boolean valida=true;
			int resp;
			String numero="0123456789";
			char caracter;
			if(letras.length()<60){
		    for(int i=0;i<letras.length();i++){
		    	caracter=letras.charAt(i);
		        resp=numero.indexOf(caracter);
		    	if(resp!=-1 && valida)
		    	valida=false;
		    	i++;
		      }		
		}
			return valida;	
		}
		private boolean validarCampos()
		{
			boolean sw=false;
			if ((!vProducto.getTxtPrePro().getText().equals("")) && (!vProducto.getTxtCodCatPro().getText().equals("")) && (!vProducto.getTxtDesPro().getText().equals("")))
			    sw=true;
			return sw;
		}

}